tg-me.com/developer_tools/238
Last Update:
DeepGit: Hashing and Cating. Понимаем файловую систему.
Ч1
Как я говорил ранее, Git это файловая система основой которой являются файлы типа tree, commit, blob.
Подробнее о типах файлов у меня вышла статья на DevQuiz.
Рекомендую прочесть ее и вернуться сюда.
Для того чтобы git начал мониторить ваши файлы ему нужно получить blob файл с этим данными.
Если вы после создания репозитория посмотрите в папку objects она будет пуста, даже если в директории с гитом уже есть файлы.
Чтобы добавить файл в git есть техническая команда git hash-object -w filename.txt
она делает blob файл с вашими данными и сохраняет себе в objects.
После этого git status
все еще будет пуст, так как индекса еще нет, но git уже сохранил себе версию этого файла.
Именно эта команда лежит в основе гита, это такой себе "save" ваших данных.
Например вы сделали
echo "first version" > new_file.txtУ вас появляется файл
git hash-object -w new_file.txt
new_file.txt
с текстом first version
и появляется файл de8d69c9026be2a49f540fda12f3e755a33e6c
в папке 22
с таким же текстом.Следом мы делаем
echo "second version" > new_file.txtУ нас появляется доп файл
git hash-object -w new_file.txt
7ac37bb280ccd34b350a59ba440614d9106e41
в папке ad
с текстом second version
Теперь с помощью git cat-file -p 22de8d69c9026be2a49f540fda12f3e755a33e6c > new_file.txt
можно переключиться на старую версию.И все это происходит до того как вы сделали
git add
.Все еще с пустым индексом.
BY Dev Tools
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/developer_tools/238